package bravo.xc.com.xc_bravo_android.http;

import bravo.xc.com.xc_bravo_android.beans.AddBankResultBeans;
import bravo.xc.com.xc_bravo_android.beans.AddBeans;
import bravo.xc.com.xc_bravo_android.beans.AddResultBeans;
import bravo.xc.com.xc_bravo_android.beans.ForgetBeans;
import bravo.xc.com.xc_bravo_android.beans.ForgetInitResultBeans;
import bravo.xc.com.xc_bravo_android.beans.GetBankResultBeans;
import bravo.xc.com.xc_bravo_android.beans.GetCardResultBeans;
import bravo.xc.com.xc_bravo_android.beans.GetNumResultBeans;
import bravo.xc.com.xc_bravo_android.beans.LoginBeans;
import bravo.xc.com.xc_bravo_android.beans.LoginResultBeans;
import bravo.xc.com.xc_bravo_android.beans.MessageBeans;
import bravo.xc.com.xc_bravo_android.beans.MessageResultBeans;
import bravo.xc.com.xc_bravo_android.beans.OrderDetailsBeans;
import bravo.xc.com.xc_bravo_android.beans.OrderDetailsResultBeans;
import bravo.xc.com.xc_bravo_android.beans.SendCodeBeans;
import bravo.xc.com.xc_bravo_android.beans.SendCodeResultBeans;
import bravo.xc.com.xc_bravo_android.beans.CommonBeans;
import bravo.xc.com.xc_bravo_android.beans.SendMoneyCodeBeans;
import bravo.xc.com.xc_bravo_android.beans.SendMoneyCodeResultBeans;
import bravo.xc.com.xc_bravo_android.beans.TradeResultBeans;
import bravo.xc.com.xc_bravo_android.beans.TransactionBeans;
import bravo.xc.com.xc_bravo_android.beans.TransactionResultBeans;
import bravo.xc.com.xc_bravo_android.beans.WithDrawBeans;
import bravo.xc.com.xc_bravo_android.beans.WithDrawRecordBeans;
import bravo.xc.com.xc_bravo_android.beans.WithDrawResultBeans;
import bravo.xc.com.xc_bravo_android.beans.WithdrawRecordResultBeans;
import retrofit2.http.Body;
import retrofit2.http.POST;
import rx.Observable;

import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.ADD_BANK;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.ADD_CARD;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.CHANGE_PASSWORD;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.DO_WITH_DRAW;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.DO_WITH_REOCRD;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.EXCHANGE_CODE;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.FORGET_PASSWORD;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_BANK;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_CARD;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_INIT;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_MESSAGE;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_ORDER;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.GET_TRADE;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.LOGIN_URL;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.LOGOUT_URL;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.SEND_CODE;
import static bravo.xc.com.xc_bravo_android.beans.ApiBeans.SEND_CODE_MONEY;

/**
 * CREATED BY YANK
 * DATE : 2017/10/27
 * MAIL : YANK.TENYOND@GMAIL.COM
 * FUNCTION :
 */

public interface UserOperationService {

    @POST(LOGIN_URL)
    Observable<LoginResultBeans> login(@Body LoginBeans user);

    @POST(LOGOUT_URL)
    Observable<SendMoneyCodeResultBeans> logout(@Body SendCodeBeans sendCodeBeans);

    @POST(FORGET_PASSWORD)
    Observable<ForgetInitResultBeans> forgetInit(@Body SendCodeBeans initBeans);

    @POST(SEND_CODE)
    Observable<SendCodeResultBeans> sendCode(@Body SendCodeBeans codeBeans);

    @POST(CHANGE_PASSWORD)
    Observable<ForgetInitResultBeans> forget(@Body ForgetBeans forgetBeans);

    @POST(GET_MESSAGE)
    Observable<MessageResultBeans> getMessage(@Body MessageBeans messageBeans);

    @POST(EXCHANGE_CODE)
    Observable<TransactionResultBeans> exchangeCode(@Body TransactionBeans transactionBeans);

    @POST(GET_TRADE)
    Observable<TradeResultBeans> getTrade(@Body CommonBeans commonBeans);

    @POST(GET_ORDER)
    Observable<OrderDetailsResultBeans> getOrder(@Body OrderDetailsBeans orderDetailsBeans);

    @POST(GET_CARD)
    Observable<GetCardResultBeans> getCard(@Body CommonBeans commonBeans);

    @POST(ADD_CARD)
    Observable<AddBankResultBeans> getSupportBank();

    @POST(ADD_BANK)
    Observable<AddResultBeans> addBank(@Body AddBeans addBeans);

    @POST(SEND_CODE_MONEY)
    Observable<SendMoneyCodeResultBeans> getCode(@Body SendMoneyCodeBeans codeBeans);

    @POST(DO_WITH_DRAW)
    Observable<WithDrawResultBeans> withDraw(@Body WithDrawBeans withDrawBeans);

    @POST(DO_WITH_REOCRD)
    Observable<WithdrawRecordResultBeans> withDrawRecord(@Body WithDrawRecordBeans withDrawRecordBeans);

    @POST(GET_INIT)
    Observable<WithDrawResultBeans> getInit(@Body CommonBeans commonBeans);
}
